Use iommu_qinval in place of qinval_enabled flag. Use
ecap_queued_inval() for determining whether queued invalidation is
available on this vt-d engine or not.
Signed-off-by: Allen Kay <allen.m.kay@intel.com>
#include "vtd.h"
#include "extern.h"
-int qinval_enabled;
-
static void print_qi_regs(struct iommu *iommu)
{
u64 val;
(sts & DMA_GSTS_QIES), sts);
spin_unlock_irqrestore(&iommu->register_lock, flags);
- qinval_enabled = 1;
return 0;
}
struct pci_dev *pdev;
int pos = 0;
- if ( !ats_enabled )
- return 0;
-
- if ( !qinval_enabled )
+ if ( !ats_enabled || !iommu_qinval )
return 0;
pdev = pci_get_pdev(bus, devfn);
drhd = acpi_find_matched_drhd_unit(pdev);
- if ( !ecap_dev_iotlb(drhd->iommu->ecap) )
+ if ( !ecap_queued_inval(drhd->iommu->ecap) ||
+ !ecap_dev_iotlb(drhd->iommu->ecap) )
return 0;
if ( !acpi_find_matched_atsr_unit(bus, devfn) )